Use a bit of the GtkLabel structure to remember that a pattern has been
authorMatthias Clasen <mclasen@redhat.com>
Mon, 9 Jul 2007 20:50:22 +0000 (20:50 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 9 Jul 2007 20:50:22 +0000 (20:50 +0000)
2007-07-09  Matthias Clasen  <mclasen@redhat.com>

        * gtklabel.[ch]: Use a bit of the GtkLabel structure to
        remember that a pattern has been set.
        (gtk_label_set_pattern_internal): Don't do anything if
        a specific pattern has been set.
        (gtk_label_set_pattern): set the new bit to TRUE when
        setting a pattern, and recalculate everything if the
        pattern is unset. Fix gtk_label_set_pattern() not working
        anymore.  (#452861, Vincent Untz)

svn path=/trunk/; revision=18426

ChangeLog
gtk/gtklabel.c
gtk/gtklabel.h

index 1483a1baeaba86e37e7ce3059f124fc43566cc3a..429d3d053cfa8a0420678993d1955290ce042098 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2007-07-09  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtklabel.[ch]: Use a bit of the GtkLabel structure to
+       remember that a pattern has been set.
+       (gtk_label_set_pattern_internal): Don't do anything if 
+       a specific pattern has been set.
+       (gtk_label_set_pattern): set the new bit to TRUE when 
+       setting a pattern, and recalculate everything if the 
+       pattern is unset. Fix gtk_label_set_pattern() not working 
+       anymore.  (#452861, Vincent Untz)
+
 2007-07-09  Claude Paroz  <claude@2xlibre.net>
 
        * configure.in: Changed uz to uz@cyrillic and uz@Latn to uz.
index 36c90650001b702c8e664eb652eb3d5dafb4685a..26cd9943498fad45f45fe5381679768d944408ac 100644 (file)
@@ -798,6 +798,7 @@ gtk_label_init (GtkLabel *label)
 
   label->use_underline = FALSE;
   label->use_markup = FALSE;
+  label->pattern_set = FALSE;
   
   label->mnemonic_keyval = GDK_VoidSymbol;
   label->layout = NULL;
@@ -1537,6 +1538,9 @@ gtk_label_set_pattern_internal (GtkLabel    *label,
 
   g_return_if_fail (GTK_IS_LABEL (label));
 
+  if (label->pattern_set)
+    return;
+
   g_object_get (gtk_widget_get_settings (GTK_WIDGET (label)),
                "gtk-enable-mnemonics", &enable_mnemonics,
                NULL);
@@ -1557,7 +1561,15 @@ gtk_label_set_pattern (GtkLabel     *label,
 {
   g_return_if_fail (GTK_IS_LABEL (label));
   
-  gtk_label_set_pattern_internal (label, pattern);
+  label->pattern_set = FALSE;
+
+  if (pattern)
+    {
+      gtk_label_set_pattern_internal (label, pattern);
+      label->pattern_set = TRUE;
+    }
+  else
+    gtk_label_recalculate (label);
 
   gtk_label_clear_layout (label);  
   gtk_widget_queue_resize (GTK_WIDGET (label));
index e13a71677dc456215a4e20dc2fb5c0e94b1009ab..5656ebbf8f0b77a932c97e109398ecf8de3f5b43 100644 (file)
@@ -62,6 +62,7 @@ struct _GtkLabel
   guint   have_transform   : 1;
   guint   in_click         : 1;
   guint   wrap_mode        : 3;
+  guint   pattern_set      : 1;
 
   guint   mnemonic_keyval;